package com.service.infoEntry.dao;

import com.service.infoEntry.entity.ProgrammeInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ProgrammeDao3 {

    /**
     * 立项
     * @param programmeInfo
     */
    void setUpProgramme(ProgrammeInfo programmeInfo);

    /**
     * 项目跟踪
     * @param programmeInfo
     */
    void updateProgrammeInfo(ProgrammeInfo programmeInfo);

    /**
     * 查询团队下所有项目
     * @param teamId
     * @param userId
     * @param programmeStatus
     * @return
     */
    List<ProgrammeInfo> queryProgrammeOfTeam(@Param("teamId") String teamId,@Param("userId") String userId,@Param("programmeStatus") Integer programmeStatus);

    /**
     * 通过项目id查询分组下某一个项目
     * @param programmeId
     * @return
     */
    ProgrammeInfo queryProgrammeOfTeamByNo(@Param("programmeId") String programmeId);

    /**
     * 想过项目编号查询项目
     * @param no
     * @return
     */
    ProgrammeInfo queryProgrammeByNo(String no);

    /**
     * 关闭项目
     * @param no
     * @param status
     */
    void closeProgramme(@Param("no") String no,@Param("status") Integer status);

    /**
     * 通过关键字模糊查询项目信息
     * @param teamId
     * @param keyword
     * @param userId
     * @param programmeStatus
     * @return
     */
    List<ProgrammeInfo> queryProgrammeByKeyWord(@Param("teamId") String teamId,@Param("keyword") String keyword,@Param("userId") String userId,@Param("programmeStatus") Integer programmeStatus);

    /**
     * 通过项目id查询项目
     * @param programmeId
     * @return
     */
    String queryAccessoryByProgrammeId(String programmeId);

    /**
     * 保存附件路径
     * @param programmeId
     * @param accessoryUrls
     */
    void addAccessory(@Param("programmeId") String programmeId, @Param("accessoryUrls") String accessoryUrls);

    /**
     * 查询项目下所有附件
     * @param programmeId
     * @return
     */
    String queryAccessory(@Param("programmeId") String programmeId);

    /**
     * 更新项目下的附件为s（如:a.docx,b.docx）
     * @param programmeId
     * @param accessories
     */
    void updateAccessory(@Param("programmeId")String programmeId,@Param("accessories") String accessories);

    /**
     * 通过id查询项目
     * @param programmeId
     * @return
     */
    ProgrammeInfo queryProgrammeById(String programmeId);

    /**
     * queryProgrammesByTeamId
     * @param teamId
     * @param userId
     * @return
     */
    List<ProgrammeInfo> queryProgrammesByTeamId(@Param("teamId") String teamId,@Param("userId") String userId);

    /**
     * queryAllNo
     * @param teamId
     * @return
     */
    List<String> queryAllNo(String teamId);
    /**
     * 根据项目状态查询项目数据
     * @param teamId
     * @param userId
     * @param status
     * @param programmeStatus
     * @return
     */
    List<ProgrammeInfo> queryProgrammeByStatus(@Param("teamId") String teamId,@Param("userId") String userId, @Param("status") Integer status,@Param("programmeStatus") Integer programmeStatus);

    /**
     * queryAllProgrammeInTeam
     * @param teamId
     * @return
     */
    List<ProgrammeInfo> queryAllProgrammeInTeam(@Param("teamId") String teamId);

    /**
     * queryProgramme
     * @param teamId
     * @param userId
     * @param name
     * @param status
     * @param programmeStatus
     * @return
     */
    List<ProgrammeInfo> queryProgramme(@Param("teamId") String teamId, @Param("userId") String userId, @Param("name") String name, @Param("status") Integer status, @Param("programmeStatus") Integer programmeStatus);

    /**
     * queryAllByDate
     * @return
     */
    List<ProgrammeInfo> queryAllByDate();

    /**
     * 删除项目
     * @param programmeNo
     * @return
     */
    int deleteProgramme(String programmeNo);

}
